Created by internet-config@share.com

Internet Config FAQ



1. About IC.


1.1. What is Internet Config?

The Internet Configuration System was designed to make your life easier by reducing the number of times which you need to enter your Internet preferences into the various preferences dialogs of all your Internet applications.

For example, currently you need to enter your Email address into many common Macintosh Internet applications, for example Eudora, NewsWatcher and Anarchie. The goal of the system was to get each of these applications to get this information from one common place and to give you a tool to edit these common preferences.

It is important to realise that applications will have to be modified to take advantage of the Internet Configuration System. It will take some time for all applications to be revised and until then you will have to enter your preferences in those applications in the traditional manner. You can find a list of some of the applications that currently support Internet Config in FAQ 1.4.

Quinn 27 Jun 1995


1.2. What is the latest version of Internet Config?

The latest version of IC is version 1.4.

Quinn 23 Feb 1997


1.3. Where can I get the latest version of Internet Config?

Each new release of Internet Config is posted to MacGifts and is therefore available Info-Mac and UMich (and their mirror sites). It is also available from any site that holds Peter Lewis' software, namely AOL, AMUG, PopCo, Australia, Japan, and Switzerland.

Internet Config is also available as a NewsWatcher helper and on the TidBITS site.

Also see FAQ 1.8 for the location of various international versions of IC.

Finally, all sorts of IC related material, including the latest version of the IC software, is available from the IC home sites in Australia and the USA.

A big thank you to all our distribution sites.

Quinn 17 Sep 1995


1.4. Which applications are "IC Aware"?

The following programs supported IC before 8 Nov 1995. The list of programs supporting IC grows almost daily, but this list will no longer be updated.

Peter 8 Nov 1995


1.5. Can I include IC with my software/CD/Internet access disk?

Internet Config, and its source code, is in the public domain. This has the following consequences:

Cool huh?

Quinn 21 Jun 1995


1.6. Which developers have committed to support IC?

The following developers have committed to supporting IC in some future release of their products:

See also FAQ 1.4 for a list of applications that currently support IC. Note that this list, like the one in FAQ 1.4, is now closed for submissions.

Quinn 24 Aug 1996


1.7. [When] will application X support Internet Config?

We have no control over any other application vendors. If you would like your favourite application to support IC, I suggest you lobby your application vendor directly. Please don't mail us.

A lot of application developers implement features in order of the number of people who request them. If more people ask for IC support, it will probably receive more attention.

Quinn 17 Sep 1995


1.8. You have spelt "Organization" incorrectly?

Internet Config was written by Australians and is localised for Australia. [If you don't believe us then check out the 'vers' 1 resource.] Thus it uses the Australian spelling for "organisation".

Chris Newman has graciously volunteered to localise IC for the US.

And while on the subject of localisation, Jean-Pierre Kuypers has localised IC to French.

Finally Michael Grinner has localised IC to German.

Thanks to all our localisers.

Quinn 17 Sep 1995


1.9. When are you doing a Windows version?

Never. Of course this does not preclude some enterprising Windows programmer from using the idea. Let's face it, they get most of their good ideas from the Mac ( :

Quinn 27 Jun 1995


1.10. This FAQ isn't very useful/sucks/needs updating. Who should I complain to?

This FAQ is currently maintained by Jeremy Nelson at Stairways Software.

I read the Internet Config mailing list and answer the easy questions. Quinn answers the hard questions. If I find repeat questions popping up on the mailing list I'll add them to this FAQ.

If you have material which you think should be add to this FAQ, please don't hesiate to email me.

Jeremy 27 May 1996


2. Using IC.


2.1. Can Internet Config be used in laboratory/shared situations?

The Internet Config system is suitable for use in situations where Macs are shared by multiple users. It offers two mechanisms to support this. The first is centred around the mechanism used to locate a preference file. When an application is launched using a preference file then it should provide the folder that contains that preference file to Internet Config (using the ICFindConfigFile call) so that IC can look for a shared preference file in that folder. IC will follow aliases to the preference file so that this solution scales for multiple applications. The initial IC Aware release of NewsWatcher demonstrated this ability to good effect.

In addition applications call the Internet Config extension through a patchable Application Program Interface (API). So an enterprising third party can write a replacement for the current Internet Config extension that gets preference data from a shared database. The Internet Config RandomSignature extension is a demonstration of the technology used to do this.

See FAQ 2.2 for an example of how to set up IC on a shared Mac.

Quinn 4 Dec 1994


2.2. My wife/coworker/dad/axolotl and I share my Mac? How do I configure IC?

Internet Config's support for Macs in shared or laboratory environments is discussed in FAQ 2.1. This purpose of this text is to give specific advice. The setup described here is somewhat complicated and you may wish to investigate alternative tools, such as Mr Prefman.

At the moment when you use a shared Mac you use NewsWatcher by having two separate preference files and each user launches the appropriate preference file to read news. NewsWatcher reads its preferences from the file you launched, not from the file in the preferences folder.

Internet Config builds on top of this scheme. You simply place an alias to your Internet Preferences file in the same folder as your NewsWatcher preferences file. When other applications support IC they should use the same technique.

So let's take a look at a hypothetical Macintosh with two users, Fred and Sheila, running Eudora (assuming Eudora ever actually supported Internet Config) and NewsWatcher. In Fred's folder there is a Eudora Folder which contains a Eudora Settings file and a News folder which contains their NewsWatcher Preferences file. Fred launches these when they want to read mail and news respectively. Sheila's folder contains a similar setup.

Fred and Sheila get together and install Internet Config. They do this by creating two different Internet Preferences files (the Internet Config application lets you open, edit and close preference files just like normal documents) and putting them in their respective user folders. Sheila then puts an alias to her Internet Preferences file into her Eudora Folder and another alias into her News folder. Fred does likewise.

Now when Sheila launches NewsWatcher, by double clicking her NewsWatcher Preferences file, NewsWatcher will tell IC to get shared preferences from the Internet Preferences file whose alias is in Sheila's News folder. And Eudora would work similarly (if it supported IC).

Quinn 17 Sep 1995


2.3. Why doesn't IC support lab situations better?

Let me explain some of the rationale behind the design of IC. The most important thing, about IC is that although it took a lot of time and energy to write, it's not a success until even more people put in even more time and energy into adopting it. So one of the primary marketing targets for IC was application developers. We just assumed that the users would like it.

So what do application developers like? In a word, simplicity. Things that are easy to understand are more likely to get adopted. So we tried to keep IC as simple as possible while still not losing any critical functionality.

There were two major features that were candidates for inclusion but which eventually got left out. The first was the concept of application specific preferences. Some users will obviously want a different signature in news and mail. We left this feature out because it would have complicated the implementation of the IC application too much. But we did leave ourselves an escape hatch. All applications identify themselves to IC by their creator type (eg 'Arch' for Anarchie) and thus it is possible to write an alternate IC extension that does this.

The second major feature which we left out was the ability to mark preferences are either 'user' and 'system' preferences. We left this out for much the same reasons as given above. And again, we left ourselves an escape hatch. Preferences can be marked read-only, in which case applications should not allow the user to edit them or attempt to write them back. So a lab oriented IC extension could mark system preferences as read-only (which would prevent the vast bulk of applications modifying them) and user preferences as read-write. It would then have to provide an alternative mechanism to allow modification of system preferences.

There was some debate on the mailing list about extending the IC API to provide a flag on the ICSetPref call that marks whether the setting should be stored 'locally' or 'globally'. The primary problem with this was that by choosing a meaning for 'local' and 'global' we would have restricted ourselves to one of the two major features discussed above. We decided that the best solution was to leave this problem for the future but do our best to make it easy to implement.

So, in conclusion, let me reiterate that the primary goal of this version of IC was simplicity for the programmer. Judging by the responses we've got from the first developers to adopt the system, we have been successful. And in the final analysis if lab managers are to gain any benefit from IC, it must first be adopted by a wide variety of developers.

Quinn 13 May 1995

2.4. I often change which hard disk I boot off. How can I keep only one set of IC prefs?

Internet Config resolves aliases to preference files. Put the real Internet Preferences file in one of your Preferences folders and an alias to it in the other.

Quinn 6 Dec 1994


2.5. Why can't I specify a preferences file when I specify my helper applications?

The short answer to this is "Because double clickable preferences documents are a kludge and this restriction is an artifact of their kludginess."

The long answer is that IC targets applications (when doing things like sending GURL events to process URLs) based on their creator code. This is a three step process. First we find it in the desktop database, then we launch it, then we send it a GURL event. The two steps are skipped if the application is already running.

If we'd allowed you to specify a preferences file then we would have had to send the application two events, first the open document event (to open the preferences), then the GURL event. This is OK when the application is not running but what if it is running? Do we send the open document event, which may or may not cause the application to switch to that user's settings [Eudora does but NewsWatcher doesn't], and then the GURL event, or do we just send the GURL event and hope. The answer to this problem was to avoid the issue altogether by only allowing you to target applications.

The workaround is to launch the application using its preference file before you use it via command clicking or to eliminate double-clickable preferences entirely using a tool such as Mr Prefman.

Quinn 17 Sep 1995


2.6. Why can't I enter the type and creator directly?

Lots of people complain about not being able to enter type and creator directly into the Add Map Entry dialog. Well you always could do this by holding the option key down in the dialog, but since this seemed to be too well hidden for all those (non?) Power Users out there, we've made the fields directly editable in IC 1.2.

Quinn 17 Sep 1995


2.7. Is there any way to provide a 'Pre-Configured' Internet Config?

Yes. We added that feature as part of IC 1.2. The procedure has changed a little with the introduction of IC 1.4, so this answer will explain both casse.

In IC 1.2 through 1.3, y can just add or modify the 'Pref' resources in the IC application. When IC starts up, it iterates through those resources creating a new IC preference for each one, with the preference's key set to the resource name and its value set to the data in the resource.

For example, to add a preconfigured news server, create a 'Pref' resource with any ID, set the resource name to "NNTPHost" (the full list of preference keys can be found in the IC programming documentation) and containing a Pascal string with the name of the NNTP server.

In IC 1.4 the situation has changed a little. The'Pref' resources still exist, they've just moved. The resources are now stored in the "Internet Config Extension" itself, as apposed to the "Internet Config" application. If you are happy to install the extension and application separately, you can just modify the extension's 'Pref' resources in the extension and leave it at that.

If you want to distribute only one file (ie the application), you have to modify the extension and then copy the modified extension back into the application. The following procedure describes how this is done:

I realise this is a bit convoluted, but it's not hard if you're familiar with ResEdit. I can assure you that this change wasn't made arbitrarily, but to correct a very significant developer issue.

Quinn 4 Feb 1997


2.8. How do I specify a port number in the Firewalls window?

Simply type in the name of the firewall, followed by a colon, followed by the port number. For example, "pole-wall.north-pole.org:801". This is covered in IC's comprehensive balloon help.

Quinn 24 Aug 1996


2.9. Why do some programs require IC and others not?

The decision as to whether to require IC is made by individual application developers. There are a number of factors that influence this decision. This entry attempts to give you some insight into the reasons why some programs require IC and others don't. Throughout this discussion I'll use examples from programs that I'm familiar with, although the reasoning is pretty general.

The first factor is whether the program has an existing user interface for editing preferences. For example, Fetch already has a UI for file type mapping and thus it's easy to selectively enable this depending on whether IC is installed or not. On the other hand, Anarchie never had a UI for editing this preference, so it's easier to require IC than to have a bunch of preferences that can't be edited.

The second factor is criticality. Symantec Program Managers uses IC to support command-clicking. Obviously this functionality is non-critical and it's easy to disable just this feature if IC is not available. The same is not true of CyberFinder, which really needs IC (or some other user interface, qv the first point) to provide this preference information.

The third factor is size and reliability. If your program needs information provided by IC then you have the choice of either requiring IC or providing a backup preference editing mechanism. This backup needs to be included in all your programs and contributes to making the them bigger, both on disk and in memory. Also, as bugs tend to be directly proportional to lines of code, this implies that your programs have more bugs. For example, ICeTEe requires IC because its code size would be hugely increased by providing a UI for editing preferences. And, because ICeTEe is an extension, providing this UI would have been a much greater compatibility liability. Requiring IC is a step towards smaller and more reliable code.

The fourth factor is time to market. If Anarchie was delayed while Peter wrote a UI for editing the file type mappings, it would have taken longer to get on the market. Or, for another example, the authors CyberFinder would never have been able to produce a fully functional program if they'd stopped to implement a helper editing dialog.

The biggest factor on the negative side is the potential user confusion caused by shipping a product that requires some other product. The other biggie -- the potential business liability involved in shipping a program that is dependent on a program not created by your company -- has been solved by us putting IC (and its source code) in the public domain.

Quinn 22 Aug 1995

2.10. When I commands-click a URL with Cyberdog as the helper, it doesn't work right. What's happening?

Cyberdog 1.2.1 seems to have a problem fielding the AppleEvent required to download URLs. This problem only occurs if Cyberdog is not running when you command-click the URL. If Cyberdog is running when you command-click the URL, everything works just fine.

The obvious workaround is to launch Cyberdog before command-clicking the URL. The problem has been reported to Apple.

Quinn 4 Feb 1997


3. Programming IC.


3.1. How do I find out about programming Internet Config?

The Internet Config Programmer's Kit is available from Australia or the USA .

This holds all the information you need to develop for Internet Config in Pascal or C using any of the common development environments (Metrowerks, Think and MPW). The kit also contains the source code to the Internet Config Extension.

The same sites also contain the Internet Config Application Source Kit, which contains the source code to the Internet Config application (in Metrowerks Pascal).

Lawrence D'Oliveiro has converted the IC interface files for use with Modula-2.

Mel Patrick has done some work with IC in FutureBasic.

Rick Giles is willing to answer questions related to IC and Prograph (and he's got it working, so what's your excuse?).

Chris Kelly has published a library for accessing Internet Config from Java (MRJ for PowerPC).

See FAQ 3.4 for details on programming IC in AppleScript and HyperCard.

Quinn 17 Sep 1995


3.2. Why does Internet Config install an extension?

Internet Config installs an extension which acts as a shared library. This extension provides an Application Program Interface (API) to the Internet preferences database. It is vitally important that applications access this database through the API and this text will explain why.

Firstly the API provides reliability and robustness. If IC was implemented merely through a shared preference file then each application developer would have to write their own code to access this data. Not only is this more work for the individual developers, it also increases the likelihood of an error that causes preference corruption.

To get around this we could have shipped IC as a statically linked library that each developer links into their application. The disadvantage of this is that if that library has bugs then it's statically linked into lots of old versions of applications that are never updated. [A classic example of this sort of problem is the original MacTCP DNR library, which looks for DNR data in the System Folder. Unfortunately with the advent of System 7 the DNR data moved into the Controls Panel folder. To get MacTCP working with System 7 Apple were forced to create a MacTCP DNR file in the System Folder anyway, just to support those old applications.]

So the IC API had to be in the form of a shared library. Unfortunately the Mac does not provide any suitable mechanism for providing shared library so we chose to implement it using a component. [The Component Manager originated with QuickTime and was rolled into the system with System 7.1. Virtually all Macs have the Component Manager or can get it easily.] So the API's statically linked glue calls the component if it's installed but otherwise accesses the IC Preferences file directly. This provides the best of both worlds: the code works on old machines and without the extension but it can be patched by simply dropping a new version into the Extensions folder.

Finally the IC API gives a huge amount of flexibility for future extension. Imagine you want your preferences to be stored on a per-application basis, or you want your preferences fetched from a central network database on a per-user basis, or you want your signature to change every Friday the 13th. Well you can patch the existing Internet Config extension (or write a complete drop-in replacement) that provides this functionality and, as long as it provides a backwardly compatible API, none of the IC Aware applications have to be changed.

An example of the cool technology that API provides is the Internet Config RandomSignature extension provided in the Programmer's Kit. While this is only a technology demonstration it shows how the API can be patched to provide all sorts of cool things that the original designers did not anticipate.

The IC component patches no traps and does no strange things. It should not suffer from extension conflicts. It doesn't even show up in the System 7.5 Extension Manager list!

Quinn 7 Dec 1994


3.3. What is IC's memory overhead?

The formula for IC 1.1's memory usage is something like this...

total_bytes_used = k1 + n * (152 + 144 + k2) + f(n)

... where ...

n is the number of connections open to IC

k1 is the Component Manager overhead for registered components

k2 is the Component Manager overhead for component instances

f(0) = 0

f(x) = 16940, where x > 0

This assumes you're not running any other IC extensions, specifically ICeTEe or RandomSignature.

For a system running Anarchie and NewsWatcher, IC is consuming about 18K. The vast bulk of this is the IC code size (as determined by the function f) which is resident in the system heap and shared between all instances.

Wasn't that fun?

IC 1.2 takes a bit more. :-) And IC 1.3 takes a bit more than that (-: And IC 1.4 even more. There appears to be a trend here!

Quinn 17 Sep 1995


3.4. How do I access IC from AppleScript or HyperCard?

There are currently two ways of accessing IC from AppleScript. The first program is Internet Config Access written by Lawrence D'Oliveiro, and the second is ICScriptor by Leonard Rosenthal.

To access IC from HyperCard there are also a number of choices. Your best bet would be to use HyperCard 2.2 and then use one of the AppleScript options.

Alternatively you could pester me a lot and I may get around to fixing and then releasing the IC XCMD that I used to prototype the Internet Config application. Somewhere along the line it broke and I've yet to fix it. If you need to access IC from HyperCard, and have a good reason why you can't use HyperCard 2.2, drop me a line and I'll see what I can do. [Personally, I don't think pestering him will get you anywhere - Peter]

Note that IC 1.4 now supports the GURL AppleEvent itself, so if all you want to do is launch a URL with the right helper, you can now ask IC to do it.

Quinn 17 Sep 1995


3.5. I've written a cool little hack using IC. Where do I send it?

Thanks for working with IC. Peter and I aren't collecting stuff for the IC Programming Kit any more, it's just too complicated to manage. The best thing you can do is post your code to MacGifts and then mail out a notice to the Internet Config mailing list about it.

Quinn/Mark Tearle 11 Jan 1996


3.6. When I call ICLaunchURL, I get error -903 returned?

This error means that your application is not high-level event aware. The quick fix is to set the "high-level event aware" bit in your application's SIZE resource.

IC launches URLs in one of two ways. If the application is not running, IC launches it using LaunchApplication and passes it the URL to open via the launchAppParameters field of the LaunchParamBlockRec. However if the application is already running, IC simply sends it the GURL AppleEvent.

However applications that send high-level events must themselves be high-level event aware. Most development environments create application which default to being not high-level event aware. You must change this if you want to launch URLs via ICLaunchURL.

Quinn 24 Aug 1996


3.7. When I call ICLaunchURL, I get error -37 returned?

This normally means that you have forgotten to call ICFindConfigFile. Many programmer's call ICStart and then immediately call ICLaunchURL without every specifying a config. IC checks for this and returns bdNamErr.

It's all documented of course, but who reads the documentation? Come to think of it, who reads the FAQ?

IC 1.4 now ships with a sample that explicitly shows the best way to launch a URL with IC.

Quinn 23 Feb 1997


3.8. Where do I send IC programming questions?

Please do not send IC programming questions to the IC support support address. There is a email list dedicated to IC programming questions. You can subscribe to the list by sending mail to <listserv@list.peter.com.au> with body text "subscribe config Your Real Name". Both Peter and I monitor that list and will try to answer your questions to the benefit of one and all.

Traffic on the IC mailing list is also archived for your reference.

Quinn 28 Aug 1997


4. Crash and Burn with IC.


4.1. Clicking on the "File Transfer" icon causes a crash. What's wrong?

You've encountered the one known bug in IC 1.2 and lower. The workaround is to:

  1. Throw away your Internet Preferences file.
  2. Run the IC application.
  3. Reconfigure your settings.

IC 1.3 fixes this bug

Quinn/Jeremy 24 Aug 1996


4.2. Clicking on the Fonts icon causes IC to crash. What is wrong?

IC hardly touches fonts at all, leaving the system to build the font popup menus. Have you tried:

Quinn/Jeremy 27 May 1996


5. General Debugging Procedure

The questions above only answer problems we have heard about. If we don't answer your question specifically, then I suggest you check out the following procedure:

  1. Make sure you are running IC 1.4. The latest version is always available from the sites listed in FAQ 1.3.
  2. Rebuild the desktop -- Hold down the Command and Option keys during reboot.
  3. Delete your Internet Preferences and re-enter them -- Corrupted Internet preferences can cause some extremely bizarre crashes and hiccups. A couple of things munge the Internet Preferences directly rather than going through IC, which inevitably causes problems (for instance, the Apple Internet Connection Kit).
  4. Re-install IC -- There are three files to delete: Internet Config application (anywhere), Internet Config Extension ("System Folder:Extensions:"), and Internet Preferences (usually "System Folder:Preferences:"). Then grab a new copy of IC, unpack it and launch the application. It will install the extension automagically.
  5. Check your hard disk with Disk First Aid. Corrupt hard disk are a common cause of error -37.

Jeremy 24 Jun 1996


666. Why is this FAQ entry so short?

Because every time I create a new entry I copy and paste this entry.

Quinn 6 Dec 1994


This document is Public Domain (really, we mean it!). No Rights Reserved

Comments: internet-config@share.com